import axios from "axios";
import { Message } from "element-ui";

/**
 *
 * @param method
 * @param url
 * @param data
 * @param params
 * @returns {Promise<AxiosResponse<any>>}
 */
export function http(method, url, data, params = {}) {
  return axios({
    method,
    url,
    data,
    params
  })
    .then(response => {
      if (response.status === 200) {
        return response.data;
      } else {
        return {
          errno: response.status,
          errmsg: "连接服务器失败"
        };
      }
    })
    .then(data => {
      if (data && data.errmsg) data.errmsg = formatErrmsg(data.errmsg);
      // eslint-disable-next-line no-console
      console.log("<====" + url, data);
      if (process.browser && data.errno) Message.error(data.errmsg);
      return data;
    })
    .catch(() => {
      return {
        errno: 500,
        errmsg: "连接服务器失败"
      };
    });
}

/**
 *
 * @param errmsg
 * @returns {string|*}
 */
function formatErrmsg(errmsg) {
  if (typeof errmsg === "string") {
    return errmsg;
  } else if (typeof errmsg === "object") {
    // eslint-disable-next-line no-unused-vars
    for (const key in errmsg) {
      return errmsg[key];
    }
  } else {
    return errmsg;
  }
}
